package com.itheima.jdk;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Arrays;


/**
 * 使用 jdk内置的一个方法 来帮我们做
 */
public class Test4 {
    public static void main(String[] args) throws Exception {
// 把test2和test3中的代码的功能合并为这一个功能来实现,精简版
        Car o = (Car) Proxy.newProxyInstance(
                Test4.class.getClassLoader(),
                new Class[]{Car.class},
                new MyInvocationHandler()
        );
        o.didi();



    }
    //他才是真正的干活的对象
    private static class MyInvocationHandler implements InvocationHandler{

        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            System.out.println("我是一个实现类InvocationHandler  ");
            String methodName=method.getName();
            Object result;
            if("start".equals(methodName)||"stop".equals(methodName)){
                System.out.println("外头调用:"+method+"且无参");
                System.out.println("参数是:"+ Arrays.toString(args));
               result=null;
            }else if("drive".equals(method)){
                System.out.println("外面调用了:"+method+"有参数");
                result=null;
            }else{
                System.out.println("滴滴");
                result=proxy;
            }

            return result;
        }
    }
}
